﻿namespace SendKeys.Win32
{
	using System;
	using System.Collections.Generic;
	using System.Linq;
	using System.Text;
	using System.Runtime.InteropServices;

	internal class HotKey
	{
		[DllImport("user32.dll", SetLastError = true)]
		[return: MarshalAs(UnmanagedType.Bool)]
		internal static extern bool RegisterHotKey(IntPtr hWnd, int id, uint fsModifiers, uint vk);

		[DllImport("user32.dll", SetLastError = true)]
		[return: MarshalAs(UnmanagedType.Bool)]
		internal static extern bool UnregisterHotKey(IntPtr hWnd, int id);

		[Flags]
		internal enum Codes : int
		{
			MOD_ALT = 0x1,
			MOD_CONTROL = 0x2,
			MOD_SHIFT = 0x4,
			MOD_WIN = 0x8,
			WM_HOTKEY = 0x312
		}
	}

	internal class Message
	{
		[DllImport("user32.dll", SetLastError = true, CharSet = CharSet.Auto)]
		internal static extern bool SendNotifyMessage(IntPtr hWnd, uint msg, UIntPtr wParam, IntPtr lParam);

		[DllImport("user32.dll", SetLastError = true, CharSet = CharSet.Auto)]
		internal static extern bool SetForegroundWindow(IntPtr hWnd);

		[DllImport("user32.dll", SetLastError = true, CharSet = CharSet.Auto)]
		internal static extern IntPtr GetForegroundWindow();

		internal enum Codes
		{
			WM_KEYDOWN = 0x100,
			WM_KEYUP = 0x101,
			WM_COMMAND = 0x111,
			WM_APPCOMMAND = 0x319
		}
	}

	internal enum Commands : uint
	{
		APPCOMMAND_BROWSER_BACKWARD = 1,
		APPCOMMAND_BROWSER_FORWARD = 2,
		APPCOMMAND_BROWSER_REFRESH = 3,
		APPCOMMAND_BROWSER_STOP = 4,
		APPCOMMAND_BROWSER_SEARCH = 5,
		APPCOMMAND_BROWSER_FAVORITES = 6,
		APPCOMMAND_BROWSER_HOME = 7,
		APPCOMMAND_VOLUME_MUTE = 8,
		APPCOMMAND_VOLUME_DOWN = 9,
		APPCOMMAND_VOLUME_UP = 10,
		APPCOMMAND_MEDIA_NEXTTRACK = 11,
		APPCOMMAND_MEDIA_PREVIOUSTRACK = 12,
		APPCOMMAND_MEDIA_STOP = 13,
		APPCOMMAND_MEDIA_PLAY_PAUSE = 14,
		APPCOMMAND_LAUNCH_MAIL = 15,
		APPCOMMAND_LAUNCH_MEDIA_SELECT = 16,
		APPCOMMAND_LAUNCH_APP1 = 17,
		APPCOMMAND_LAUNCH_APP2 = 18,
		APPCOMMAND_BASS_DOWN = 19,
		APPCOMMAND_BASS_BOOST = 20,
		APPCOMMAND_BASS_UP = 21,
		APPCOMMAND_TREBLE_DOWN = 22,
		APPCOMMAND_TREBLE_UP = 23,
		APPCOMMAND_MICROPHONE_VOLUME_MUTE = 24,
		APPCOMMAND_MICROPHONE_VOLUME_DOWN = 25,
		APPCOMMAND_MICROPHONE_VOLUME_UP = 26,
		APPCOMMAND_HELP = 27,
		APPCOMMAND_FIND = 28,
		APPCOMMAND_NEW = 29,
		APPCOMMAND_OPEN = 30,
		APPCOMMAND_CLOSE = 31,
		APPCOMMAND_SAVE = 32,
		APPCOMMAND_PRINT = 33,
		APPCOMMAND_UNDO = 34,
		APPCOMMAND_REDO = 35,
		APPCOMMAND_COPY = 36,
		APPCOMMAND_CUT = 37,
		APPCOMMAND_PASTE = 38,
		APPCOMMAND_REPLY_TO_MAIL = 39,
		APPCOMMAND_FORWARD_MAIL = 40,
		APPCOMMAND_SEND_MAIL = 41,
		APPCOMMAND_SPELL_CHECK = 42,
		APPCOMMAND_DICTATE_OR_COMMAND_CONTROL_TOGGLE = 43,
		APPCOMMAND_MIC_ON_OFF_TOGGLE = 44,
		APPCOMMAND_CORRECTION_LIST = 45,
		APPCOMMAND_MEDIA_PLAY = 46,
		APPCOMMAND_MEDIA_PAUSE = 47,
		APPCOMMAND_MEDIA_RECORD = 48,
		APPCOMMAND_MEDIA_FAST_FORWARD = 49,
		APPCOMMAND_MEDIA_REWIND = 50,
		APPCOMMAND_MEDIA_CHANNEL_UP = 51,
		APPCOMMAND_MEDIA_CHANNEL_DOWN = 52,
	}
}
